package cn.tedu.mvc.controller;

import cn.tedu.mvc.pojo.vo.JsonResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 负责实现文件上传
 */
@RestController
public class UploadController {
    private String uploadPath = "D:/files";

    /**
     * 文件上传测试案例
     * @param multipartFile 用于接收客户端传递的文件对象，
     * @RequestPart用于描述文件上传参数对象，并可以指定要接收的客户端参数名
     */
    @PostMapping("/api/upload")
    public JsonResult doUpload(@RequestPart ("multipartFile")
                                MultipartFile multipartFile) throws IOException {
        //1.获取原文件名
        String originalFilename=multipartFile.getOriginalFilename();
        //2.获取原文件名后缀
        String suffix=originalFilename.substring(originalFilename.lastIndexOf("."));
        //3.通过随机字符串构建一个新的文件名
        String newFileName=UUID.randomUUID().toString()+suffix;
        //4.构建文件上传路径
        File fileDir=new File(uploadPath);
        if(!fileDir.exists())fileDir.mkdirs();
        //5.实现文件上传
        multipartFile.transferTo(new File(fileDir,newFileName));
        return new JsonResult("/"+newFileName);
    }
}
